const jwt = require('jsonwebtoken')//生成JWT
//secret 密钥的本质: 一个字符串
var secretKey = 'secretkey!!!'
// 生成秘钥
// 第一个参数为存在jwt的信息,
// 第二个参数为jwt存在时间
function createJWT(payload = {}, maxAge = "1h") {
    let token = jwt.sign(payload, secretKey, {
        expiresIn: maxAge
    })
    return token
}

//解析秘钥
function verifyToken(token, secretKey) {
    let data = jwt.verify(token, secretKey)
    return data
}

// 将生成秘钥的token放置响应头里面发送给前端
function publishJWT(res, payload = {}, maxAge = "1h") {
    let token = createJWT(payload, maxAge)
    // 放置在响应头里面传给前端
    res.header("authorization", token)
    return token
}

// 解析请求头里面的token
function verifyJWT(req) {
    // 获取到请求里面的token
    let authorization = req.headers.authorization;
    if (!authorization) {
        return null
    }
    // 分割字符
    let token = authorization.split(" ")[1];
    // 将分割出来的密文进行解析
    let result = verifyToken(token, secretKey)
    return result

}
module.exports = { publishJWT, verifyJWT }